import fs from 'fs';

console.log(1);
//3.js 线程执行时，从硬盘的文件系统调入内存
// I/O 操作
// readFile a.txt 从内存中又去硬盘的文件系统读取a.txt
// a.txt 存的是一本三国演义
// 异步代码


const p = new Promise((resolve,reject)=>{
    console.log(3);//  同步 立即执行的执行函数
    fs.readFile('./a.txt',function(err,data){
        console.log(err,'//////');
        if(err){
            reject(err);
            return;
        }
    // console.log(data.toString());
    // 值 结果
    resolve(data.toString());//promise 被解决了 状态变成fulfilled
})
//Promise 的 executor 立即同步执行，
// 输出 3。随后调用 fs.readFile，这是一个异步操作，主线程不会等待，而是继续向下执行。
    // 立即执行的执行函数 executor
})
p.then((data)=>{
    console.log(data,'///////');
}).catch((err)=>{
    console.log(err,'读取文件失败');
})
console.log(2);

// 此时，所有同步代码执行完毕。事件循环开始检查任务队列。当文件读取完成后，fs.readFile 的回调被调用：

// 如果文件存在，err 为 null，调用 resolve，将 Promise 状态变为 fulfilled；
// 如果文件不存在，err 为 Error 对象，调用 reject，状态变为 rejected。
// 随后，对应的 .then() 或 .catch() 作为微任务被执行，输出文件内容或错误信息。

// 因此，最终输出顺序为：1 → 3 → 2 →（异步结果）。
